package com.jiantong.work.service;

import com.jiantong.work.model.BreedReport;
import io.terminus.common.model.Paging;
import io.terminus.common.model.Response;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by niufei on 2017/3/15.
 *
 */
public interface BreedReportReadService {


    /**
     * 根据id产地检疫  养殖端的申报详情
     * @param id 主键id
     * @return BreedReport 对象
     */
    Response<BreedReport> findById(Long id);

    /**
     * 溯源
     * @param breedType 养殖类型
     * @param markNumber 耳标号
     * @return BreedReport
     */
    Response<BreedReport> findByMarkNumber(Integer breedType ,String markNumber);

    /**
     * 分页查询 产地检疫的列表
     * @param pageNo 页码
     * @param pageSize 条数
     * @param criteria 参数
     * @return Paging<BreedReport>
     */
    Response<Paging<BreedReport>> pagingBreedReport(Integer pageNo, Integer pageSize, Map<String, Object> criteria);

    String findCurrentMaxNumber(String number);

    /**
     * 查询单据当前状态
     * @param id 单据id
     * @return 状态
     */
    Response<Map<String ,Integer>> findStatusById(Long id);

    /**
     * 分页查询 产地检疫的列表
     * @param pageNo 页码
     * @param pageSize 条数
     * @param statuses 状态
     * @return Paging<BreedReport>
     */
    Response<Paging<BreedReport>> pagingBreedReportAll(Integer pageNo, Integer pageSize, List<Integer> statuses);

    /**
     * 分页查询
     * @param pageNo 页码
     * @param pageSize 条数
     * @param statuses 状态集合
     * @return Paging<BreedReport>
     */
    Response<Paging<BreedReport>> pagingMulti(Integer pageNo, Integer pageSize, List<Integer> statuses, Long breedFactoryId , Date start , Date end,Integer isScale);

    /**
     * 分页查询
     * @param pageNo 页码
     * @param pageSize 条数
     * @param statuses 状态集合
     * @return Paging<BreedReport>
     */
    Response<Paging<BreedReport>> pagingMultiGF(Integer pageNo, Integer pageSize, List<Integer> statuses, Long applyReportId , Long certificateStationId, Date start , Date end,Integer isScale);


    /**
     * 通用条件分页查询（criteria）
     * @param pageNo 页码
     * @param pageSize  条数
     * @param criteria  状态集合
     * @return Paging<BreedReport>
     */
    Response<Paging<BreedReport>> pagingCommon(Integer pageNo, Integer pageSize, Map<String ,Object> criteria);

    Response<List<Map>> areaorder();

    Response<List<Map>> applyorder();


    Response<Paging<BreedReport>> cert(Integer pageNo, Integer pageSize, Map<String ,Object> criteria);

    /**
     * 官方兽医 首页
     * @param pageNo 页码
     * @param pageSize 每页多少条
     * @param breedFactoryIds 养殖场IDs
     * @param statuses 状态集合
     * @return
     */
    Response<Paging<BreedReport>> pagingForVeterinarian(Integer pageNo,Integer pageSize,List<Long> breedFactoryIds,List<Integer> statuses);

}
